#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

//节点数据类型
typedef int SingleListdatatype;

//链表节点
typedef struct SingleListNode
{
	SingleListdatatype val;
	struct SingleListNode* next;
}SLNode;

//节点的创建
SLNode* BuyNode(SingleListdatatype x);

//链表的打印
void SLNodePrint(SLNode* plist);

//尾插
void SLNodepushback(SLNode** plist, SingleListdatatype x);

//头插
void SLpushfront(SLNode** plist, SingleListdatatype x);

//尾删
void SLpopback(SLNode** plist);

//头删
void SLpopfront(SLNode** plist);

//查找
SLNode* SLFind(SLNode* plist, SingleListdatatype x);

//在指定位置之前插入数据
void SLposfront(SLNode** plist, SLNode* pos,SingleListdatatype x);

//在指定位置之后插入数据
void SLposback(SLNode* pos, SingleListdatatype x);

//删除pos节点
void slpoppos(SLNode** plist, SLNode* pos);

//删除pos节点后一个节点
void slpopposback(SLNode* pos);

//销毁链表
void DestorySL(SLNode** plist);